Instituto Federal de São Paulo (IFSP)
Campus Bragança Paulista/SP

Análise e Desenvolvimento de Sistemas (ADS)

3o. módulo
Profa. Ana Paula Müller Giancoli
paulagiancoli@ifsp.edu.br

AULA 12 - ANÁLISE POR PONTOS DE FUNÇÃO

Agenda

  • Métricas e Estimativas de tamanho de Projeto de Software
  • Perguntas

1. Métricas e Estimativas de tamanho de Projeto de Software

Figura 1: Software Engineering Process Office (SEPO)
Fonte: Autoria própria

2. Por que medir um software ?

  • 1.Indicar a qualidade do produto.
  • 2.Avaliar a produtividade dos que desenvolvem o produto.
  • 3.Determinar os benefícios derivados de novos métodos e ferramentas de engenharia de software.
  • 4.Formar uma base para as estimativas.
  • 5.Ajudar na justificativa de aquisição de novas ferramentas ou de treinamentos adicionais.

3. Medidas de Software

Medidas Diretas Medidas Indiretas
1. Custos de Produção
2. Esforços de Produção
3. Linhas de Código
4. Velocidade de Execução
5. Memória
6. Defeitos (Número de Erros)
1. Funcionalidade
2. Qualidade
3. Complexidade
4. Eficiência
5. Confiabilidade
6. Manutenibilidade

MEDIDA: Uma indicação quantitativa da extensão, quantidade, dimensão, capacidade ou tamanho do produto ou do processo.
MEDIÇÃO: Ato de determinação de uma medida.
INDICADOR: É uma métrica ou a combinação delas, que fornece compreensão do processo de software, de um projeto ou do produto.

3.1. Objetivos da Medição de Software

Objetivos
Entender: ajudam a entender o comportamento e o funcionamento de produtos de software.
Avaliar: utilizadas para determinar padrões, metas e critérios de aceitação.
Controlar: utilizadas para controlar processos, produtos e serviços de software.
Prever: utilizadas para prever valores de atributos.

4. Métricas

Métricas
1. Orientadas ao tamanho: são as medidas diretas.
2. Orientadas à função: são as medidas indiretas.
3. Orientadas às pessoas: são as atuações das pessoas, seus relacionamentos com ferramentas e métodos.
4. De Qualidade: são as em conformidade com os requisitos implícitos e explícitos do usuário.
5. De Produtividade: são as que possuem enfoque na saída do processo de engenharia de software, com objetivo de avaliar o próprio processo.
6. Técnicas: são as que possuem o enfoque nas características do software (complexidade, modularidade...)

5. Problema

  • Problema: Escolha da métrica mais adequada para medir o tamanho da aplicação.

6. Métricas Orientadas ao Tamanho (Estimar Tamanho)

  • São derivadas de medidas diretas do software e do processo por meio do qual ele é desenvolvido.
    • Linhas de Código: LOC.
    • Milhares de Linhas de Código: KLOC.

6.1. Vantagens e Desvantagens

Vantagens Desvantagens
- Fáceis de serem obtidas.
- Vários modelos de estimativas baseados em LOC e KLOC.
- LOC e KLOC dependem da Linguagem de Programação.
- Penalizam programas bem projetados, mas pequenos.
- Não se adaptam às linguagens não procedimentais.
- Difícil de obter na fase de planejamento.

6.2. Exemplos de Métricas Orientadas ao Tamanho

Projeto Esforços $ KLOC Págs. Doc. Erros Pessoas-Mês
projA 24 168 12.1 365 29 3
projB 62 440 27.2 1224 86 5
projC 43 314 20.2 365 64 36
Métricas derivadas
Produtividade = Pessoas-Mês / KLOC
Qualidade = Erros / KLOC
Custo = $ / LOC
Documentação = Págs. Doc. / KLOC
  • As linhas de códigos e a produtividade variam em função da linguagem de programação utilizada.

7. Métricas Orientadas à Função (Estimar Tamanho)

  • Surgiu: IBM em 1970 como alternativa das métricas de contagem de linhas de código.
  • Aumento de usuários, culminou na criação da fundação International Function Point user Group (IFPUG) em 1986.
  • CPM: Manual de Práticas de Contagem, tem por objetivo padronizar a técnica.
  • Em 1989, Netherlands Software Metrics Users Association (NESMA).
  • São derivadas de medidas indiretas do software e do processo por meio do qual ele é desenvolvido.
  • Concentra-se na funcionalidade ou utilidade do software. (Quantificação das funcionalidades.)
  • Possibilidade de estimar a dimensão de projetos desde as fases iniciais de análise e projeto de sistemas. (Fase em que se tem poucas informações sobre o sistema.)
  • Pontos por Função: PF

7.1. Vantagens e Desvantagens

Vantagens Desvantagens
- Independentes da linguagem de programação.
- Ideal para aplicações que usam linguagens não procedimental.
- Baseados em dados mais fáceis de serem conhecidos durante a evolução do projeto.
- Cálculo baseado em dados subjetivos.
- Não é uma medida direta, é apenas um número.

7.2. Tipos de Componentes

  • Cinco tipos de componentes lógicos ou funções da aplicação afetam de formas distintas o tamanho da aplicação, classificados por:
    • Tipo de Dados
    • Tipo de Transações
Tipo de Dados Tipo de Transações
(a) Arquivos Lógicos Internos: ALI.
(b) Arquivos de Interface Externa: AIE.
(a) Entradas Externas: EE.
(b) Saídas Externas: SE
(c) Consultas Externas: CE.

8. Procedimento para Contagem de Pontos

Procedimento
1.Identificar o Tipo de Contagem.
2.Identificar o escopo e a fronteira de aplicação.
3.Contar Funções de Dados e Funções Transacionais.
4.Determinar o Fator de Ajuste e os Pontos de Funções não ajustados.
5.Calcular os Pontos de Funções Ajustados.

8.1. Fronteira da Aplicação

  • É a linha que separa o projeto ou aplicação que está sendo contada de outras aplicações ou sistemas organizacionais.

Figura 2: Fronteira da Aplicação
Fonte: Autoria própria

Figura 3: Detalhamento da Fronteira da Aplicação

Fonte: Autoria própria

Sigla Significado Descrição
ALI Arquivos Lógicos Internos É um grupo de dados logicamente relacionados, ou informações de controle, identificados e modificados pelo usuário e mantidos dentro da fronteira da aplicação que está sendo controlada.
AIE Arquivos Interface Externa É um grupo de dados logicamente relacionados, ou informações de controle, utilizados no sistema que está sendo analisado, mas que são mantidos fora da fronteira da aplicação que está sendo contada.
EE Entradas Externas É qualquer função ou transação que leva dados ou informações de controle de fora para dentro da fronteira da aplicação que está sendo contada.
SE Saídas Externas É um processo que fornece dados derivados (ocorre quando um ou mais dados elementares são combinados para gerar elementos de dados adicionais) para fora da fronteira da aplicação que está sendo contada.
CE Consultas Externas É uma transação que combina transações de entrada e saída, resultando em recuperação de dados de um ALI ou AIE.

8.2. Contagem da Função Dados

Contagem Função Dados
1. Cada uma dessas funções de dados deve ser classificada segundo sua complexidade funcional. (vide tabela a seguir)
2. Essa complexidade é definida com base em dois conceitos: registros lógicos e itens de dados.
- Registros Lógicos: são subconjuntos de dados dentro de um ALI/AIE, que foram reconhecidos pelo usuário. Se o usuário não reconhecer subconjuntos de dados em um ALI/AIE, então se deve contar o ALI/AIE como um registro lógico.
- Item de Dados: é um campo reconhecido pelo usuário como único e não repetido. Vale destacar que só devem ser contados os itens de dados utilizados pela aplicação em contagem.

8.2.1. Complexidade ALI e AIE

  • COLUNA 1: Número de REGISTROS LÓGICOS
  • LINHA 1: Número de ITENS DE DADOS Referenciados
Linha 1: De 1 a 19 De 20 a 50 51 ou mais
Coluna 1
Apenas 1
SIMPLES SIMPLES MÉDIA
De 2 a 5 SIMPLES MÉDIA COMPLEXA
6 ou mais MÉDIA COMPLEXA COMPLEXA

8.3. Contagem da Função Transacionais

Contagem Função Transacionais
1. Envolve a identificação de funções transacionais (entradas externas, saídas externas e consultas externas) e sua classificação de acordo com a complexidade funcional envolvida (simples, média ou complexa).
2. A complexidade funcional é feita com base: número de arquivos referenciados e dos itens de dados manipulados pela função.
3. Utilizando as tabelas a seguir, sendo a primeira para entradas externas e a segunda para saídas e consultas externas.
4. Um arquivo referenciado pode ser um ALI lido ou mantido pela função transacional, ou um AIE lido pela função transacional.
5. Já o número de itens de dados referenciados é calculado considerando apenas os itens de dados efetivamente referenciados pela função transacional em questão.

8.3.1. Complexidade Entradas Externas - EE

  • COLUNA 1: Número de ARQUIVOS REFERENCIADOS
  • LINHA 1: Número de ITENS DE DADOS Referenciados
Linha 1: De 1 a 4 De 5 a 15 16 ou mais
Coluna 1
0 ou 1
SIMPLES SIMPLES MÉDIA
2 SIMPLES MÉDIA COMPLEXA
3 ou mais MÉDIA COMPLEXA COMPLEXA

8.3.2. Complexidade Saídas - SE e Consultas Externas - CE

  • COLUNA 1: Número de ARQUIVOS REFERENCIADOS
  • LINHA 1: Número de ITENS DE DADOS Referenciados
Linha 1: De 1 a 5 De 6 a 19 20 ou mais
Coluna 1
0 ou 1
SIMPLES SIMPLES MÉDIA
2 ou 3 SIMPLES MÉDIA COMPLEXA
4 ou mais MÉDIA COMPLEXA COMPLEXA

IMPORTANTE

  • Contadas as funções de dados e as funções transacionais, é possível calcular os PFs não ajustados de uma aplicação. Esse cálculo é feito da seguinte forma.
    • Para cada um dos cinco tipos de função (ALI, AIE, EE, SE e CE), são computados os totais de pontos de função (NPFi), segundo a seguinte expressão:
In [28]:
from IPython.display import display, Math, Latex
display(Math(r'NPF_{i} = \sum_{j=1}^3 NC_{i,j} * C_{i, j}'))
$\displaystyle NPF_{i} = \sum_{j=1}^3 NC_{i,j} * C_{i, j}$
  • onde NCi,j = número funções do tipo i que foram classificados na complexidade j .
  • i variando de 1 a 5, segundo os tipos de função existentes: ALI, AIE, EE, SE e CE.
  • j variando de 1 a 3, segundo os valores de complexidade: simples, média e complexa.
  • Ci,j = valor da contribuição da complexidade j no cálculo dos pontos da função i, dado pela tabela a seguir.

8.4. Cálculo dos Pontos de Função não Ajustados

  • COLUNA 1: FUNÇÃO
  • LINHA 1: COMPLEXIDADE
Linha 1: SIMPLES MÉDIA COMPLEXA
Coluna 1
ALI
7 10 15
AIE 5 7 10
EE 3 4 6
SE 4 5 7
CE 3 4 6

IMPORTANTE

  • O total de pontos de função não ajustados (PFNA) é dado pelo somatório dos pontos das tabelas de função:
In [42]:
from IPython.display import display, Math, Latex
display(Math(r'PFNA = \sum_{i=1}^5 NPF_{i}'))  
$\displaystyle PFNA = \sum_{i=1}^5 NPF_{i}$
  • sendo que i varia de 1 a 5, segundo os tipos de função existentes (AIL, AIE, EE, SE e CE).

8.4.1. Determinação do Fator de Ajuste

1. O fator de ajuste influencia os pontos de função não ajustados em +/- 35%, obtendo-se o número de PFs ajustados.
2. Para se calcular o fator de ajuste, são usadas 14 características gerais dos sistemas, a saber:
   2.1 É requerida Comunicação de Dados ?
   2.2 Existem Funções de Processamento de Dados Distribuído ?
   2.3 O Desempenho é crítico ?
   2.4 Utilização do Equipamento (Restrições de Recursos Computacionais). Funcionará em um SO existente e intensamente utilizado ?
   2.5 As entradas on-line requerem que as transações de entrada sejam construídas com um Volume de Telas e Transações ?
   2.6 São requeridas Entrada de Dados On-line ?
   2.7 Eficiência do Usuário Final (Usabilidade) ?
   2.8 A Atualização dos arquivos é On-line ?
   2.9 O Processamento Interno é Complexo ?
   2.10 O código é projeto e adequado para Reusabilidade ?
   2.11 Facilidade de Implantação. A conversão e instalação estão incluídas no projeto ?
   2.12 Facilidade Operacional (Processos Operacionais, tais como Inicialização, Cópia de Segurança, Recuperação etc). O sistema exige backup e recuperação confiáveis ?
   2.13 Múltiplos Locais e Organizações do Usuário ?
   2.14 Facilidade de Mudanças (Manutenibilidade) e uso pelo usuário ?
  • Responder as 14 perguntas anteriores considerando uma escala de 0 a 5 quanto a influência:
0 1 2 3 4 5
NENHUMA POUCA MODERADA MÉDIA SIGNIFICANTE ESSENCIAL
  • Os 14 graus de influência (GIs) informados são somados, resultando no nível de influência total (NIT):
In [43]:
from IPython.display import display, Math, Latex
display(Math(r'NIT = \sum_{i=1}^{14}  GI_{i}'))  
$\displaystyle NIT = \sum_{i=1}^{14} GI_{i}$
  • O valor do fator de ajuste (VFA) é determinado, então, pela fórmula:
In [44]:
from IPython.display import display, Math, Latex
display(Math(r'VFA = (NIT * 0.01) + 0.65'))  
$\displaystyle VFA = (NIT * 0.01) + 0.65$
Cálculo dos Pontos de Função Ajustados
1. Uma vez calculados os PF não ajustados e o fator de ajuste, é possível calcular os PFs ajustados.
2. Esse cálculo é feito de formas diferentes para cada tipo de contagem (projeto de desenvolvimento, projeto de manutenção ou aplicações instaladas).
3. Para projetos de desenvolvimento, o cálculo é dado por:
In [45]:
from IPython.display import display, Math, Latex
display(Math(r'PF = (PFNA * VFA) '))  
$\displaystyle PF = (PFNA * VFA) $
  • onde PFNA = Número de PFs não ajustados,
  • VFA = valor do fator de ajuste.

8.5. Pontos por Função - Contagem Estimada de PF

  • A contagem Estimada assume que:
    • os arquivos lógicos (ALI e AIE) têm complexidade baixa.
    • os processos de entrada (EE), saída (SE) e consulta (CE) têm complexidade média.
Pssos para COntagem Estimada de Pontos de Função
1. Determinar todos os ALI, AIE, EE, SE, CE.
2. Atribuir a complexidade dos AIE e ALI como Baixa e das funções tipo transação EE, SE e CE como Média.
3. Calcular o total da contagem dos pontos de funções, segunda a tabela de complexidade.
  • COLUNA 1: FUNÇÃO
  • LINHA 1: COMPLEXIDADE PARA CONTAGEM ESTIMADA
Linha 1: SIMPLES MÉDIA COMPLEXA
Coluna 1
ALI
7 10 15
AIE 5 7 10
EE 3 4 6
SE 4 5 7
CE 3 4 6

8.5.1. Exemplo

  • COLUNA 1: PARÂMETRO
  • LINHA 1: FATOR DE PONDERAÇÃO
Linha 1: Contagem * SIMPLES MÉDIA COMPLEXA =
Coluna 1
número de arquivo ALI
* 7 10 15 =
número de interfaces esternas AIE * 5 7 10 =
números de entradas do usuário EE * 3 4 6 =
número de saídas do usuário SE * 4 5 7 =
número de consultas do usuário CE * 3 4 6 =
Pergunta Resposta
1. O fator de ajuste influencia os pontos de função não ajustados em +/- 35%, obtendo-se o número de PFs ajustados.
2. Para se calcular o fator de ajuste, são usadas 14 características gerais dos sistemas, a saber:
   2.1 É requerida Comunicação de Dados ?
   2.2 Existem Funções de Processamento de Dados Distribuído ?
   2.3 O Desempenho é crítico ?
   2.4 Utilização do Equipamento (Restrições de Recursos Computacionais). Funcionará em um SO existente e intensamente utilizado ?
   2.5 As entradas on-line requerem que as transações de entrada sejam construídas com um Volume de Telas e Transações ?
   2.6 São requeridas Entrada de Dados On-line ?
   2.7 Eficiência do Usuário Final (Usabilidade) ?
   2.8 A Atualização dos arquivos é On-line ?
   2.9 O Processamento Interno é Complexo ?
   2.10 O código é projeto e adequado para Reusabilidade ?
   2.11 Facilidade de Implantação. A conversão e instalação estão incluídas no projeto ?
   2.12 Facilidade Operacional (Processos Operacionais, tais como Inicialização, Cópia de Segurança, Recuperação etc). O sistema exige backup e recuperação confiáveis?
   2.13 Múltiplos Locais e Organizações do Usuário ?
   2.14 Facilidade de Mudanças (Manutenibilidade) e uso pelo usuário ?
TOTAL
  • Responder as 14 perguntas anteriores considerando uma escala de 0 a 5 quanto a influência:
0 1 2 3 4 5
NENHUMA POUCA MODERADA MÉDIA SIGNIFICANTE ESSENCIAL
  • Os 14 graus de influência (GIs) informados são somados, resultando no nível de influência total (NIT):
In [43]:
from IPython.display import display, Math, Latex
display(Math(r'NIT = \sum_{i=1}^{14}  GI_{i}'))  
$\displaystyle NIT = \sum_{i=1}^{14} GI_{i}$
  • O valor do fator de ajuste (VFA) é determinado, então, pela fórmula:
In [47]:
from IPython.display import display, Math, Latex
display(Math(r'VFA = (NIT * 0.01) + 0.65'))  
$\displaystyle VFA = (NIT * 0.01) + 0.65$
  • Os pontos por função (PF) é determinado, então, pela fórmula:
In [49]:
from IPython.display import display, Math, Latex  
display(Math(r'PF = Contagem Total * ( VFA ) '))  
display(Math(r'PF = Contagem Total * ( (NIT * 0.01) + 0.65) '))  
$\displaystyle PF = Contagem Total * ( VFA ) $
$\displaystyle PF = Contagem Total * ( (NIT * 0.01) + 0.65) $
Métricas derivadas
Produtividade = Pessoas-Mês / PF
Qualidade = Erros / PF
Custo = $ / PF
Documentação = Págs. Doc. / PF

9. Passos para Estimar Tamanho de Aplicação utilizando APF.

Referências

  • Esta aula foi elaborada a partir do conteúdo disponibilizado em cada um dos links indicados no próprio texto.

Perguntas

  • Esclareça suas eventuais dúvidas durante as aulas.
  • Ou pelo E-mail: paulagiancoli@ifsp.edu.br.
  • Ou pelo Fórum do componente curricular.

ADS - AOO - 3o. módulo.
Modelo e formato elaborado por profa. Ana Paula Müller Giancoli - BSD 2-Clause License. - Setembro.2020.

</div> </div>